﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace praca_v2
{
    public partial class Rezerwacje : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            WypelnijTabelke("Rezerwacje");
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            DodajTydzien("Rezerwacje");
        }

        public void DodajTydzien(string dbTableName, string connectionString = "ConnectionString")
        {
            ConnectionStringSettings settings = System.Configuration.ConfigurationManager.ConnectionStrings[connectionString];
            SqlConnection connection = new SqlConnection(settings.ConnectionString);
            connection.Open();

            SqlCommand command = new SqlCommand("INSERT INTO " + dbTableName + " (Dzien_tygodnia, Data, 10:00-11:00, 11:00-12:00, 12:00-13:00, 13:00-14:00) " + "VALUES(@Godzina, @Dzien_tygodnia, @Data, @Czy_zajety)", connection);
            string data = Calendar1.SelectedDate.Date.ToString().Substring(0, 10);
            //string[] tablicaGodzin = { "10:00", "11:00", "12::00", "13:00", "14:00", "15:00", "16:00" };
            //string[] tablicaDni = { "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela" };
            
            connection.Close();
        }
        public void WypelnijTabelke(string dbTableName, string connectionString = "ConnectionString")
        {
            ConnectionStringSettings settings = System.Configuration.ConfigurationManager.ConnectionStrings[connectionString];
            SqlConnection connection = new SqlConnection(settings.ConnectionString);
            connection.Open();

            SqlCommand command = new SqlCommand("SELECT * FROM " + dbTableName, connection);
            SqlDataReader dr = command.ExecuteReader();
            string[] tabRezerwacje = { "Dzien_tygodnia", "Data", "Dziesiata", "Jedenasta", "Dwunasta", "Trzynasta" };
            int licznikPrzyciskow = 0;
            Table1.Rows.Clear();
            TableRow r = new TableRow();
            for (int i = 0; i < 6; i++)
            {
                TableCell c = new TableCell();
                string wartosc = tabRezerwacje[i].Replace('_', ' ');
                c.Controls.Add(new LiteralControl(wartosc));
                r.Cells.Add(c);
            }
            Table1.Rows.Add(r);

            while(dr.Read())
            {
                
                r = new TableRow();           
                for (int licznikTab = 0; licznikTab < 6; licznikTab++)
                {
                    TableCell c = new TableCell();
                    if (licznikTab > 1)
                    {
                        if (dr[tabRezerwacje[licznikTab]].ToString().Trim() == "True")
                        {
                            c.Controls.Add(new LiteralControl("Zarezwowany"));
                        }
                        else
                        {
                            c.Controls.Add(WygenerujPrzycisk(dr["Data"].ToString().Trim(), licznikTab, licznikPrzyciskow));                            
                            licznikPrzyciskow++;
                        }
                    }
                    else
                    {
                        c.Controls.Add(new LiteralControl(dr[tabRezerwacje[licznikTab]].ToString().Trim()));
                    }
                    r.Cells.Add(c);
                }
                Table1.Rows.Add(r);
            }
            connection.Close();
        }
        public Button WygenerujPrzycisk(string data, int godzina, int i)
        {
            Button przycisk = new Button();
            przycisk.Text = "Zarezerwuj";
            przycisk.ID = "ButtonZarezerwuj" + i.ToString();
            
           
            przycisk.Command += new CommandEventHandler(this.Zarezerwuj);
            przycisk.CommandArgument += data + " " + godzina.ToString();
            return przycisk;
        }
        protected void Zarezerwuj(Object sender,CommandEventArgs e)
        {
            string[] parametry = e.CommandArgument.ToString().Split(' ');
            string data = parametry[0];
            int godzina = Convert.ToInt32(parametry[1]);
            string dbTableName = "Rezerwacje";
            string connectionString = "ConnectionString";
            string[] tabRezerwacje = { "Dzien_tygodnia", "Data", "Dziesiata", "Jedenasta", "Dwunasta", "Trzynasta" };
            ConnectionStringSettings settings = System.Configuration.ConfigurationManager.ConnectionStrings[connectionString];
            SqlConnection connection = new SqlConnection(settings.ConnectionString);
            connection.Open();
            
            SqlCommand command = new SqlCommand("UPDATE " + dbTableName + " SET " + tabRezerwacje[godzina] + "=@Godzina WHERE Data=@Data", connection);
            
            command.Parameters.AddWithValue("@Data", data);
            command.Parameters.AddWithValue("@Godzina", "True");
            int rows = command.ExecuteNonQuery();

            connection.Close();
            WypelnijTabelke("Rezerwacje");

            
        }

    }
}